require "#{RAILS_ROOT}/app/models/item"
require "#{RAILS_ROOT}/app/classes/irt/irt_item"

#* rule.rb
#* Copyright (C) 2010  Embian Inc.
#
#  This program is free software: you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation, either version 3 of the License, or 
#  (at your option) any later version.
#  
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#  
#  You should have received a copy of the GNU General Public License
#  along with This program.  If not, see <http://www.gnu.org/licenses/>.
#  
#* Abstract classs for CAT rules such as Starting Rule, Stopping Rule, Item Selection Rule, etc.
#* Author: KyoungMo Yang(E-mail : mo@embian.com)
#* Modified: 2010-11-30
#* References: UserProfile, Item, IRTItem
module Rule
  attr_accessor :profile
  
  #* Functionailities
  # * Default constructor
  #* Parameters 
  # * [profile] : an instance of UserProfile
  #* Return
  # * An instance
  #* Note
  # * N/A
  def initialize(profile)
    @profile = profile
  end
  
  #* Functionailities
  # * Abstract method that must be implemented on the classes including this module
  #* Parameters 
  # * [*args] : argement list
  #* Return
  # * N/A
  #* Note
  # * N/A
  def run(*args)
    raise NotImplementedError
  end
end